123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121 |
- "use client";
- import { GameInfo } from "@/api/home";
- import { useRouter } from "@/i18n/routing";
- import { server } from "@/utils/client";
- import { useTranslations } from "next-intl";
- import Script from "next/script";
- import { FC, useEffect, useRef,useState } from "react";
- // 之前版本备份
- interface Props {
- brand_id: string;
- token: string;
- }
- // dedprz | deepwin365 | damslots | chips | deloro-casino
- const SportsClient: FC<Props> = (props) => {
- const t = useTranslations("ProfilePage");
- const { brand_id, token } = props;
- const [currentToken, setCurrentToken] = useState(token);
- const btRef = useRef(null);
- const router = useRouter();
- useEffect(() => {
- // @ts-ignore
- if (window.BTRenderer) {
- onLoad();
- }
-
- // 离开体育页的时候需要kill掉
- return () => {
- // @ts-ignore
- btRef.current?.kill();
- };
- }, []);
- useEffect(() => {
- // 如果token更新了才调用update
- if( currentToken !== token){
- updateToken(token);
- }
- }, [token]);
- const getGameDetailApi = async () => {
- const data = await server
- .request<GameInfo>({
- url: "/v1/api/front/game_info_by_id",
- method: "post",
- data: { id: "sportsBet", mode: 1 },
- })
- .then((res) => {
- if (res.code === 200) {
- setCurrentToken(res.data.game_url)
- return res.data.game_url;
- } else {
- return "";
- }
- });
- return data;
- };
- const updateToken = (newToken: string) => {
- // @ts-ignore
- if(currentToken!== newToken){
- setCurrentToken(newToken);
- }
- // @ts-ignore
- if (window.BTRenderer) {
- onLoad();
- }
- }
- const onLoad = () => {
- // @ts-ignore
- const bt = new BTRenderer();
- btRef.current = bt;
- // bt.updateOptions({url:'/'})
- bt.initialize({
- brand_id: brand_id,
- token: token,//使用最新的token
- onTokenExpired: getGameDetailApi, //过期自动更新token
- onSessionRefresh: () => {
- // 销毁之前的实例并等待刷新完成
- if(btRef.current){
- // @ts-ignore
- btRef.current?.kill();
- }
-
- router.refresh()
- },
- themeName: "default",
- lang: "pt-br",
- target: document.getElementById("betby"),
- betSlipOffsetBottom: 80,
- // betSlipOffsetRight: 750,
- betSlipZIndex: 1000,
- stickyTop: 0,
- betSlipOffsetTop: 50,
- onRecharge: function () {
- router.push("/deposit");
- },
- onRouteChange: function () {
- },
- onLogin: function () {},
- onRegister: function () {},
- onBetSlipStateChange: function () {},
- });
- };
- return (
- <>
- <div id="betby" className={"h-[100%]"}></div>
- <Script src={"https://ui.invisiblesport.com/bt-renderer.min.js"} onLoad={onLoad} />
- </>
- );
- };
- export default SportsClient;
|